www.gusucode.com > VC 调用控制面板各种对话框-源码程序 > VC 调用控制面板各种对话框-源码程序/code/SystemDialog.cpp

    //Download by http://www.NewXing.com
// SystemDialog.cpp: implementation of the CSystemDialog class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "SystemDialog.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

#define NUM_SYSTEM_DIALOGS			16

#ifdef _UNICODE 
typedef void (_stdcall *PFUNCTION_ENTRYPOINT)(
										   HWND hwndStub,
										   HINSTANCE hAppInstance,
										   LPWSTR lpCmdLine,
										   int    nCmdShow
										   );

#else
typedef void (_stdcall *PFUNCTION_ENTRYPOINT)(
										   HWND hwndStub,
										   HINSTANCE hAppInstance,
										   LPSTR lpCmdLine,
										   int    nCmdShow
										   );
#endif


//iSystemDialogID, cDllName, cFuncName, cCommand
static SystemDialog SDArray[NUM_SYSTEM_DIALOGS]=
#ifndef _UNICODE	//ANSI
{
	{SD_FORMAT,					_T("Shell32.dll"), "SHFormatDrive", ""},
	{SD_INTERNET_OPTIONS,		_T("Shell32.dll"), "Control_RunDLLA", "inetcpl.cpl,,0"},
	{SD_ADD_REMOVE_PROGRAMS,	_T("Shell32.dll"), "Control_RunDLLA", "appwiz.cpl"},
	{SD_DATE_TIME,				_T("Shell32.dll"), "Control_RunDLLA", "timedate.cpl"},
	{SD_DISPLAY,				_T("Shell32.dll"), "Control_RunDLLA", "desk.cpl"},
	{SD_MODEM,					_T("Shell32.dll"), "Control_RunDLLA", "modem.cpl"},
	{SD_MULTIMEDIA,				_T("Shell32.dll"), "Control_RunDLLA", "mmsys.cpl,,0"},
	{SD_MOUSE,					_T("Shell32.dll"), "Control_RunDLLA", "main.cpl @0"},
	{SD_NETWORK,				_T("Shell32.dll"), "Control_RunDLLA", "netcpl.cpl"},
	{SD_PASSWORD,				_T("Shell32.dll"), "Control_RunDLLA", "password.cpl"},
	{SD_SYSTEM,					_T("Shell32.dll"), "Control_RunDLLA", "sysdm.cpl,,0"},
	{SD_REGIONAL_SETTINGS,		_T("Shell32.dll"), "Control_RunDLLA", "intl.cpl,,0"},
	{SD_SOUNDS,					_T("Shell32.dll"), "Control_RunDLLA", "mmsys.cpl @1"},
	{SD_GAME_CONTROLLERS,		_T("Shell32.dll"), "Control_RunDLLA", "joy.cpl"},
	{SD_KEYBOARD,				_T("Shell32.dll"), "Control_RunDLLA", "main.cpl @1"},
	{SD_DEVICE_MANAGER,			_T("DevMgr.dll"),  "DeviceManager_ExecuteA", " " /*set device ID here*/}
};
#else				//UNICODE
{
	{SD_FORMAT,					_T("Shell32.dll"), "SHFormatDrive", ""},
	{SD_INTERNET_OPTIONS,		_T("Shell32.dll"), "Control_RunDLLW", "inetcpl.cpl,,0"},
	{SD_ADD_REMOVE_PROGRAMS,	_T("Shell32.dll"), "Control_RunDLLW", "appwiz.cpl"},
	{SD_DATE_TIME,				_T("Shell32.dll"), "Control_RunDLLW", "timedate.cpl"},
	{SD_DISPLAY,				_T("Shell32.dll"), "Control_RunDLLW", "desk.cpl"},
	{SD_MODEM,					_T("Shell32.dll"), "Control_RunDLLW", "modem.cpl"},
	{SD_MULTIMEDIA,				_T("Shell32.dll"), "Control_RunDLLW", "mmsys.cpl,,0"},
	{SD_MOUSE,					_T("Shell32.dll"), "Control_RunDLLW", "main.cpl @0"},
	{SD_NETWORK,				_T("Shell32.dll"), "Control_RunDLLW", "netcpl.cpl"},
	{SD_PASSWORD,				_T("Shell32.dll"), "Control_RunDLLW", "password.cpl"},
	{SD_SYSTEM,					_T("Shell32.dll"), "Control_RunDLLW", "sysdm.cpl,,0"},
	{SD_REGIONAL_SETTINGS,		_T("Shell32.dll"), "Control_RunDLLW", "intl.cpl,,0"},
	{SD_SOUNDS,					_T("Shell32.dll"), "Control_RunDLLW", "mmsys.cpl @1"},
	{SD_GAME_CONTROLLERS,		_T("Shell32.dll"), "Control_RunDLLW", "joy.cpl"},
	{SD_KEYBOARD,				_T("Shell32.dll"), "Control_RunDLLW", "main.cpl @1"},
	{SD_DEVICE_MANAGER,			_T("DevMgr.dll"),  "DeviceManager_ExecuteA", " " /*set device ID here*/}
};
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CSystemDialog::CSystemDialog()
{

}

CSystemDialog::~CSystemDialog()
{

}

void CSystemDialog::DoModal(int iDialogID, HWND hParent)
{
	for (int i=0; i<NUM_SYSTEM_DIALOGS; i++)
	{
		if (iDialogID==SDArray[i].iSystemDialogID)
		{
			PFUNCTION_ENTRYPOINT pEntryPoint=NULL;
			HINSTANCE hInst=AfxGetInstanceHandle();
			HMODULE  hModule = LoadLibrary(SDArray[i].cDllName);		
			if (hModule) 
			{
				pEntryPoint = (PFUNCTION_ENTRYPOINT) GetProcAddress(hModule, SDArray[i].cFuncName);
			}
			
			if (pEntryPoint)
			{
				pEntryPoint(hParent, hInst, SDArray[i].cCommand, SW_SHOW);
			}
			break;
		}
	}
}